<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    // 一.数组的扩展方法
    // 1.Array.from()方法用于将对象转为真正的数组(类数组转数组) - 扩展运算符可以
    // 1.1.对象转数组要求：属性必须是数字字符串，拥有length属性。
    // let obj = {
    //     name: 'zhangsan',
    //     age: 100
    // }

    // console.log(Array.from(obj));//[]

    // let obj = {
    //     0: 'zhangsan',
    //     1: 100,
    //     length: 2
    // }

    // console.log(Array.from(obj)); //["zhangsan", 100]

    // 1.2.类数组转数组
    // let str = 'hello';
    // str = Array.from(str); //转换成数组
    // str.push('world');
    // console.log(str); //["h", "e", "l", "l", "o", "world"]


    // 2.Array.of()方法用于将一组值，转换为数组。
    // console.log(Array.of(1, 2, 3, 4, 5)); //[1, 2, 3, 4, 5]

    // 3.fill()方法使用给定值，填充一个数组。
    // let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    // console.log(arr.fill('zhangsan', 2, 5));



    // 二.对象的扩展方法
    // 1.对象的简洁表示法(属性名和属性值名称相同可以只写一个,省略function)
    // let name = 'wangwu';
    // let obj = {
    //     name: name,
    //     showname: function() {
    //         return this.name;
    //     }
    // };

    // let obj = {
    //     name,
    //     showname() {
    //         return this.name;
    //     }
    // }

    // console.log(obj.name);
    // console.log(obj.showname());

    // 2.Object.assign()用于对象的合并，将源对象的所有可枚举属性，复制到目标对象。
    // 此方法也能实现浅拷贝。
    // 此方法可以应用于原生js插件的封装。
    let obj1 = {
        a: 1,
        b: 2,
        c: 3
    };

    let obj2 = {
        c: 4,
        d: 5,
        e: 6
    };

    let obj3 = {
        d: 7,
        e: 8,
        f: 9
    };

    let obj = Object.assign({}, obj1, obj2, obj3);
    //如果属性名重名，后面覆盖前面
    console.log(obj);


    // Object.keys()获取对象所有的key(属性)集合，返回一个数组。
    // Object.values()获取对象所有的value(属性值)集合，返回一个数组。
    // console.log(Object.keys(obj));
    // console.log(Object.values(obj));

    // 引用传递赋值 - 浅拷贝。
    // let arr1 = [1, 2, 3];
    // let arr2 = Object.assign([], arr1); //浅拷贝
    // arr2.push(4);
    // console.log(arr1);
    // console.log(arr2);
</script>